#include <iostream>
#include <sys/time.h>
#include <sys/resource.h>
#include <signal.h>
#include <unistd.h>

void handler(int signo)
{
    std::cout << "signo = " << signo << std::endl;
    exit(1);
}

int main()
{
    // 当超过CPU限制或者内存限制之后, OS通过向进程发送信号
    for (int i = 1; i <= 31; ++i)
    {
        signal(i, handler);
    }

    // 1. 测试CPU时间限制
    // struct rlimit _cpu_limit;
    // _cpu_limit.rlim_cur = 1;
    // _cpu_limit.rlim_max = RLIM_INFINITY;
    // setrlimit(RLIMIT_CPU, &_cpu_limit);
    // while (1)
    // {
    //     std::cout << "cpu" << std::endl;
    // }

    // 2. 测试内存时间限制
    // struct rlimit _mem_limit;
    // _mem_limit.rlim_cur = 1024 * 1024 * 40;
    // _mem_limit.rlim_max = RLIM_INFINITY;
    // setrlimit(RLIMIT_AS, &_mem_limit);
    // int count = 0;
    // while (true)
    // {
    //     int *p = new int[1024 * 1024 * 4]; // 4M
    //     count++;
    //     std::cout << "count=" << count << std::endl;
    //     sleep(1);
    // }

    return 0;
}